Semaphore(CI/CD)をセットアップしてみた
Semaphore
SmaphoreはクラウドのCI/CDツールです。 ざっくりいってしまえばTravis CIやCircleCIのようなツールとなります。
The world’s fastest CI/CD platform
Continuous Integration & Delivery with Docker Support - Semaphore
とのことで、速度を売りの一つにしているようです。
公式サイトにはCodeship,Travis CI,CircleCIでテストスイートを実行した際の速度比較が記載されています。
GitのホスティングサービスとしてGitHubとBitbucketが選択できるようです。今回はGitHubのプロジェクトと連携してみます。
やってみた
GitHubのアカウントをそのまま利用できるので、こちらのGet Started with GitHubからサインアップします。
Authorize rendertextをクリックし、SemaphoreからGitHubアカウントへのアクセスを許可します。
リポジトリのホスト先を聞かれるので、ここではGitHubを選択します。
連携するリポジトリの種類を選びます。 今回は試しに動かしてみるだけなのでOnly Public reposを選択します。
リポジトリへのアクセスを許可します。
リポジトリの一覧が表示されるので、連携させたいリポジトリを選択します。
最初に連携するブランチを選択します。ここで選択したブランチ以外にも、新しくブランチを作成した際はSemaphoreは自動的にテストを実行します。ここではmasterブランチを選択します。
Semaphoreがリポジトリを分析します。ソースコードを分析した結果、プロジェクトの言語に合わせてビルド用のコマンドを自動生成してくれるようです。
今回は連携したのは新規作成したばかりのGradleプロジェクトなのですが、うまく認識してくれませんでした。そもそも対応していないか、あまりにも新規作成したばかりでJavaのコードが少なさすぎたのでしょうか。(GitHubの言語判定では、コード量が HTML > JavaScript > CSS > Java となっているプロジェクトでした。)
ひとまずここは手作業でJobの設定をしてみます。 JobのセクションはSetup,Parallel job,After jobに分かれています。
例えば、
- Setupでデータベースのセットアップをして
- Parallel jobでテストを実行して
- Afterでテスト結果やビルドしたモジュールをどこかにアップロード
といった用途でセクションを分割することを意図していると思いますが、ここではとりあえずParallel jobでテストの実行だけしてみます。
./gradlew test
設定が完了するとジョブが実行されます。
ジョブの結果はGitHubにも自動で連携されます。
Project Settings->BadgeからBadgeのURLを取得できるので、README.mdにコピペしてみます。
Badgeが表示されました。
感想
SemaphoreをGitHubと連携し、テストを実行してみました。
- ビルドの設定のSemaphore側に持つ(ソースコード側で管理しない)
- ビルド用のコマンドを自動生成する機能がある
- 実行速度を売りにしている
あたりが主な特徴に思えました。 設定そのものはGUIで簡単に行えるので、既存プロジェクトのCI実行速度に不満がある場合など、検証も比較的簡単に行えるのではないでしょうか。
また、公式のコミュニティで運用されているチュートリアルが非常に充実しており、様々な環境でのビルドについての記載があるので色々と参考になりそうだと思いました。 Semaphore Community - Semaphore
私からは以上です。